1
ข้ามการค้นหาแบบเส้นตรง: พลังของคอนเทนเนอร์เชิงความสัมพันธ์
AI037Lesson 15
00:00

ลองนึกภาพห้องสมุดที่หนังสือไม่ได้จัดเรียงตามวันที่มาถึง แต่จัดโดยใช้ กุญแจสากลซึ่งเป็นการเปลี่ยนแปลงแนวคิดจากแบบลำดับไปยัง คอนเทนเนอร์เชิงความสัมพันธ์แทนที่จะสแกน เวกเตอร์ แบบเส้นตรง ($O(N)$) เราจะใช้ แมป หรือ เซต เพื่อให้การค้นหาใช้เวลาลอการิธึม ($O(\log n)$)

1. ธรรมชาติของการเชื่อมโยง

ใน แมปเราเก็บข้อมูล คู่คีย์-ค่าคีย์ทำหน้าที่เป็นดัชนี ซึ่งสามารถเป็นสตริง วัตถุผู้ใช้กำหนด หรือประเภทใด ๆ ที่รองรับ การจัดเรียงอย่างเข้มงวดและ เซตกลับกัน เก็บเฉพาะคีย์ที่ไม่ซ้ำกัน จึงเหมาะสำหรับการตรวจสอบสมาชิกหรือกรองข้อมูล

เวกเตอร์ (แบบลำดับ)เซต (เชิงความสัมพันธ์)[0]"A"[1]"B"[2]"A"(ซ้ำ)ตัวกรองค่าที่ไม่ซ้ำกันคีย์:"A"คีย์:"B"

2. แบบเรียงลำดับกับแบบไม่เรียงลำดับ

คอนเทนเนอร์มาตรฐาน (แมป, เซต) จะจัดเรียงคีย์ให้อยู่ตามลำดับ ตามมาตรฐานภาษา C++11 ได้แนะนำเวอร์ชันที่ไม่เรียงลำดับ (unordered_map) ที่ใช้ฟังก์ชันแฮช ฟังก์ชันแฮช เพื่อประสิทธิภาพเฉลี่ย $O(1)$ มองหา โลโก้ C++11 เมื่อใช้งานบักเก็ตประสิทธิภาพสูงเหล่านี้

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>